using System;
using System.Collections.Generic;
using System.Text;

namespace SavedVariablesParser.Line {
    /// <summary>
    /// Provides an interface that represents lines in a file.
    /// </summary>
    public interface ILine {
        /// <summary>
        /// The text of the line.
        /// </summary>
        string Text {get;}

        /// <summary>
        /// Specifies the type of line.
        /// </summary>
        LineType Type {get;}

        /// <summary>
        /// Specifies the line number within the original file where this line can be found.
        /// </summary>
        int LineNumber {get;}

        /// <summary>
        /// Renders the line and returns a string representing the rendered value.
        /// </summary>
        /// <returns>The text line rendered in a predefined format.</returns>
        string Render();

        /// <summary>
        /// Renders the line to the supplied <see cref="StringBuilder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="StringBuilder"/> to render the string to.</param>
        void Render(StringBuilder builder);
    }
}
